//
//  main.m
//  08-类的扩展
//
//  Created by 曹曹 on 16/7/13.
//  Copyright © 2016年 曹曹. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSObject+SayHello.h"
#import "NSString+UppercaseCapital.h"
#import "Student.h"
#import "BuyPerson.h"
#import "Dog.h"

int main(int argc, const char * argv[]) {
#pragma mark - 类的扩展的方式
#pragma mark - Category(类目, 类别, 分类)
    //   1> Category的创建
    //      通过Objective-C创建
    //      会产生两个文件 .h .m
    //      文件名会以 类名+Categoty名
    NSObject *objc = [[NSObject alloc] init];
    [objc sayHello];
    //   2> Category的使用
    //      向对应文件中添加需要的方法
    //      引入你对应要使用的位置
    NSString *string = @"hello";
    NSString *upperCapital = [string uppercasedCapital];
    NSLog(@"%@", upperCapital);
#pragma mark - Extension 延展
    // 一般定义在.m中, 其中声明一些私有的属性或方法的声明(注意延展中不实现方法)
    // 保持.h的整洁
    Dog *dog = [[Dog alloc] init];
    [dog getDogDailyLife];
#pragma mark - Delegate 代理
    // 举例: 海外代购
    Student *student = [[Student alloc] init];
    BuyPerson *buyPerson = [[BuyPerson alloc] init];
    student.delegate = buyPerson;
    [student seeWeChat];
    return 0;
}
